package com.snail.clouds.framework.util;

import com.snail.clouds.framework.dto.CloudAccountDTO;
import com.snail.clouds.framework.dto.UserProfileDTO;
import com.snail.clouds.framework.entity.CloudAccount;
import com.snail.clouds.framework.entity.UserProfile;

/**
 * DTO转换工具类
 */
public class DtoConverter {
    
    /**
     * 将UserProfile转换为UserProfileDTO
     * @param userProfile 用户实体
     * @return 用户DTO
     */
    public static UserProfileDTO convertToUserProfileDTO(UserProfile userProfile) {
        if (userProfile == null) {
            return null;
        }
        
        UserProfileDTO dto = new UserProfileDTO();
        dto.setId(userProfile.getId());
        dto.setUserCode(userProfile.getUserCode());
        dto.setNickname(userProfile.getNickname());
        dto.setRole(userProfile.getRole());
        dto.setStatus(userProfile.getStatus());
        dto.setExpiresAt(userProfile.getExpiresAt());
        dto.setMaxStorage(userProfile.getMaxStorage());
        dto.setUsedStorage(userProfile.getUsedStorage());
        dto.setCreatedAt(userProfile.getCreatedAt());
        dto.setUpdatedAt(userProfile.getUpdatedAt());
        return dto;
    }
    
    /**
     * 将UserProfileDTO转换为UserProfile
     * @param userProfileDTO 用户DTO
     * @return 用户实体
     */
    public static UserProfile convertToUserProfile(UserProfileDTO userProfileDTO) {
        if (userProfileDTO == null) {
            return null;
        }
        
        UserProfile entity = new UserProfile();
        entity.setId(userProfileDTO.getId());
        entity.setUserCode(userProfileDTO.getUserCode());
        entity.setNickname(userProfileDTO.getNickname());
        entity.setRole(userProfileDTO.getRole());
        entity.setStatus(userProfileDTO.getStatus());
        entity.setExpiresAt(userProfileDTO.getExpiresAt());
        entity.setMaxStorage(userProfileDTO.getMaxStorage());
        entity.setUsedStorage(userProfileDTO.getUsedStorage());
        return entity;
    }
    
    /**
     * 将CloudAccount转换为CloudAccountDTO
     * @param cloudAccount 云存储账户实体
     * @return 云存储账户DTO
     */
    public static CloudAccountDTO convertToCloudAccountDTO(CloudAccount cloudAccount) {
        if (cloudAccount == null) {
            return null;
        }
        
        CloudAccountDTO dto = new CloudAccountDTO();
        dto.setId(cloudAccount.getId());
        dto.setUserId(cloudAccount.getUserId());
        dto.setCloudType(cloudAccount.getCloudType());
        dto.setAccount(cloudAccount.getAccount());
        dto.setStatus(cloudAccount.getStatus());
        dto.setAccountInfo(cloudAccount.getAccountInfo());
        dto.setTotalStorage(cloudAccount.getTotalStorage());
        dto.setUsedStorage(cloudAccount.getUsedStorage());
        dto.setCreatedAt(cloudAccount.getCreatedAt());
        dto.setUpdatedAt(cloudAccount.getUpdatedAt());
        return dto;
    }
    
    /**
     * 将CloudAccountDTO转换为CloudAccount
     * @param cloudAccountDTO 云存储账户DTO
     * @return 云存储账户实体
     */
    public static CloudAccount convertToCloudAccount(CloudAccountDTO cloudAccountDTO) {
        if (cloudAccountDTO == null) {
            return null;
        }
        
        CloudAccount entity = new CloudAccount();
        entity.setId(cloudAccountDTO.getId());
        entity.setUserId(cloudAccountDTO.getUserId());
        entity.setCloudType(cloudAccountDTO.getCloudType());
        entity.setAccount(cloudAccountDTO.getAccount());
        entity.setStatus(cloudAccountDTO.getStatus());
        entity.setAccountInfo(cloudAccountDTO.getAccountInfo());
        entity.setTotalStorage(cloudAccountDTO.getTotalStorage());
        entity.setUsedStorage(cloudAccountDTO.getUsedStorage());
        return entity;
    }
}